package datastructure.utils;

/**
 * @author or2
 */
public class Common {

    /**
     * 交换数组中两个元素的位置
     * @param array 对数组进行交换
     * @param i 第一个交换元素的下标
     * @param j 第二个交换元素的下标
     * @param <E> 使用泛型, 适应任意元素的数组
     */
    public static <E> void swapArray(E[] array, int i, int j) {
        if (i > array.length || j > array.length) {
            throw new ArrayIndexOutOfBoundsException();
        }
        E temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    /**
     * 自定义数组输出样式 替换 soutc
     * @param obj 每个被输出的元素
     */
    public static void print(Object obj) {
        System.out.print(obj + " ");
    }

    /**
     * 验证数组是否有序
     * @param arr 原数组
     * @param <E> extends Comparable<E>
     * @return
     * <table border="1">
         * <tr>
             * <td>有序	&nbsp;</td>
             * <td>true	&nbsp;</td>
         * </tr>
         * <tr>
             * <td>无序	&nbsp;</td>
             * <td>false	&nbsp;</td>
         * </tr>
     * </table>
     */
    public static <E extends Comparable<E>> boolean test(E[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i].compareTo(arr[i + 1]) > 0) {
                return false;
            }
        }
        return true;
    }
}
